package com.lanxi.nbpaytest.Service;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

/**
 * @Author mintaoyu
 * Date on 2020-02-25  15:23
 */

public interface PayService {

    /**
     * 初始化
     */
    void init();

    /**
     * 正式初始化
     */
    void formalInit();

    /**
     * 请求报文签名
     * @param body 待签名内容
     * @return 抛出异常或者返回null表示签名失败
     */
    String sign(String body);

    /**
     * 验证签名
     * @param body 签名原文
     * @param signMsg 签名后的Base64字符串
     * @return
     */
    boolean validate(String body, String signMsg);


    /**
     * 生成请求html
     * @param appId
     * @param reqUrl 支付网关请求地址
     * @param body 交易数据
     * @param signMsg 交易数据签名值（Base64）
     * @return 构造好的HTTP POST交易表单
     */
    String createAutoFormSubmitHtml(String appId, String reqUrl, String body, String signMsg);

    /**
     * http提交
     * @param appId
     * @param url
     * @param body 报文内容
     * @return
     */
    String post(String appId, String url, String body);


    /**
     * 自定义post
     * @param appId
     * @param url
     * @param body
     * @return
     */
    List<ArrayList<String>> myPost(String appId, String url, String body);


    InputStream backInputStream(String appId, String url, String body);


}
